package A02_MyList;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class ListDemo1 {
    public static void main(String[] args) {
        //List系列集合：添加的元素是有序、可重复、有索引
        //1、创建一个集合
        List <String> list = new ArrayList<>();

        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        System.out.println(list);

        //在集合指定的位置插入元素
        list.add(1,"qqq");
        System.out.println(list);

        //删除指定索引处的元素，并把被删除的元素做返回
        //在方法发生重载的时候.remove不会自动装箱
        //优先调用，实参和形参类型一致的那个方法
        //例如：要通过内容将[1,2,3]中的1删除，那么要进行手动装箱，将1变成Integer类型
        String remove = list.remove(0);
        System.out.println(remove);
        System.out.println(list);

        //修改指定索引的元素
        String result = list.set(0,"hhh");
        System.out.println(result);
        System.out.println(list);

        //返回指定索引处的元素
        String s = list.get(0);
        System.out.println(s);

        //遍历
        //由于List实现了Collection接口，因此Collection的遍历方法对List也适用，以下为List特有的遍历方法
        //1、普通for循环
        for(int i = 0;i < list.size();i++){
            System.out.println(list.get(i));

        }

        //2、列表迭代器
        //获取了一个列表迭代器对象,里面的指针默认指向零索引
        //额外增加的方法：在遍历过程中可以添加元素

        ListIterator<String> it = list.listIterator();
        while(it.hasNext()){
            String str = it.next();
            if("bbb".equals(str)){
                it.add("qqq");
            }
        }

        System.out.println(list);
    }
}
